table of contents
FSTATAT(2) | Руководство программиста Linux | FSTATAT(2) |
ИМЯ¶
fstatat - получает состояние файла, определяемого относительно файлового дескриптора каталога
ОБЗОР¶
#include <fcntl.h> /* определения констант AT_* */ #include <sys/stat.h> int fstatat(int dirfd, const char *pathname, struct stat *buf, int flags);
Требования
макроса
тестирования
свойств
для glibc (см.
feature_test_macros(7)):
fstatat():
- Начиная с glibc 2.10:
- _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
- До glibc 2.10:
- _ATFILE_SOURCE
ОПИСАНИЕ¶
Системный вызов fstatat() работает также как системный вызов stat(2), за исключением случаев, описанных в данной справочной странице.
Если в pathname задан относительный путь, то он считается относительно каталога, на который ссылается файловый дескриптор dirfd (а не относительно текущего рабочего каталога вызывающего процесса, как это делается в stat(2)).
Если в pathname задан относительный путь и dirfd равно специальному значению AT_FDCWD, то pathname рассматривается относительно текущего рабочего каталога вызывающего процесса (как stat(2)).
Если в pathname задан абсолютный путь, то dirfd игнорируется.
Значение flags может быть 0, или включать один или более следующих флагов:
- AT_NO_AUTOMOUNT (начиная с Linux 2.6.38)
- Не выполнять автоматическое монтирование конечного компонента («basename») pathname, если это каталог, который является точкой монтирования. Это позволяет вызывающему получить атрибуты точки монтирования (а не расположения, где её предполагалось смонтировать). Этот флаг можно использовать в инструментах, сканирующих каталоги, для предотвращения массового автоматического монтирования каталогов в их точки монтирования. Флаг AT_NO_AUTOMOUNT не учитывается, если к точке уже уже была выполнено монтирование.
- AT_SYMLINK_NOFOLLOW
- Если значение pathname является символьной ссылкой, не разыменовывать её, а вернуть информацию о самой ссылке, как это делается в lstat(2). (По умолчанию, fstatat() разыменовывает символьные ссылки как и stat(2).)
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При успешном выполнении fstatat() возвращает 0; при ошибке — -1, а в errno задаётся причина ошибки.
ОШИБКИ¶
В fstatat() могут возникнуть те же ошибки, что и в stat(2). Также, в fstatat() могут возникнуть следующие ошибки:
ВЕРСИИ¶
Вызов fstatat() был добавлен в ядро Linux версии 2.6.16; поддержка в glibc доступна с версии 2.4.
СООТВЕТСТВИЕ СТАНДАРТАМ¶
POSIX.1-2008. Подобный системный вызов есть в Solaris.
ЗАМЕЧАНИЯ¶
Смотрите в openat(2) объяснение необходимости fstatat().
Нижележащий системный вызов, используемый обёрточной функцией fstatat() в glibc, на самом деле вызывает fstatat64().
СМОТРИТЕ ТАКЖЕ¶
2012-05-04 | Linux |